package eSn.Core;

import java.util.regex.Pattern;

/***
 * 校验处理类，IS函数族
 * @author Administrator
 *
 */
public class Chk {
	/**
	 * 判断参数是否为 Null
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsNull(Object obj){
		if (obj==null) 
			return true;
		else
			return false;
	}
	
	/**
	 * 判断是否则是一个数字（基于十进制数）
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsNumber(String obj){
		 return IsWholeNumber(obj) || IsDecimalNumber(obj);
	}
	
	/**
	 * 判断是否则是一个整数（基于十进制数）
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsWholeNumber(String obj){
		if ( obj.equals("")) return false;
		if ( obj.equals("-")) return false;
		if ( obj.equals("+")) return false;
		
		Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");     
	    return pattern.matcher(obj).matches();     
	}
	/**
	 * 判断是否则是一个小数（基于十进制数）
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsDecimalNumber(String obj){
		if ( obj.equals("")) return false;
		if ( obj.equals("-")) return false;
		if ( obj.equals("+")) return false;
		try{
			if (Str.Left(obj,2).equals("-."))return false;
			}catch(Exception e){
				return false;
		}
			try{
				if (Str.Left(obj,2).equals("+."))return false;
				}catch(Exception e){
					return false;
			}		
		
		Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");     
	    return pattern.matcher(obj).matches();     
		
	}
	
	/**
	 * 判断是否则是一个整数
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsInteger(String obj){
		try{
			int a = Integer.parseInt(obj);
			return true;
			}catch(Exception e){
				return false;
		}	
	}
	
	/**
	 * 判断是否则是一个长整数
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsLong(String obj){
		try{
			long a = Long.parseLong(obj);
			return true;
			}catch(Exception e){
				return false;
		}	
	}
	
	/**
	 * 判断是否则是一单精度数
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsFloat(String obj){
		try{
			float a = Float.parseFloat(obj);
			return true;
			}catch(Exception e){
				return false;
		}	
	}	
	
	/**
	 * 判断是否则是一双精度数
	 * @param obj 判断参数
	 * @return 如果为null返回true,反之为false
	 */
	public static final boolean IsDouble(String obj){
		try{
			double a = Double.parseDouble(obj);
			return true;
			}catch(Exception e){
				return false;
		}	
	}
	
}
